Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling

Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling


Publicatiedatum:
28-05-2026

Inwerkingtreding:
28-05-2026

18.2 Wat is de winst- en verliesrekening o.b.v. Grootboek?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: Zorgkantoren 18.2.0 - Complete versie met R en S totalen
2# Parameters: ?startperiode, ?eindperiode
3# Ontologie: versie 3.0.0 of nieuwer
4# 
5# Deze query berekent de winst- en verliesrekening obv Prismant of RGS grootboekrubrieken.
6# Structuur: 3 delen via UNION die alle jaarrekeningposten + totalen genereren
7# Performance: Eén database scan voor alle berekeningen
8
9PREFIX onz-fin: <http://purl.org/ozo/onz-fin#>
10PREFIX onz-g: <http://purl.org/ozo/onz-g#>
11PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
12
13SELECT
14    ?jaarrekeningpost
15    (SUM(?bedrag_rubriek) AS ?bedrag)
16WHERE
17{
18    {
19        # ================================================================
20        # DEEL 1: Berekening eindtotalen P, Q, R, S uit ruwe grootboekdata
21        # ================================================================
22        {
23            # Bereken alle componentbedragen in één database scan voor performance
24            SELECT 
25                (SUM(?p_bedrag) AS ?p_totaal)      # P Som der bedrijfsopbrengsten
26                (SUM(?q_bedrag) AS ?q_totaal)      # Q Som der bedrijfslasten
27                (SUM(?r_i_bedrag) AS ?r_i_totaal)  # R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten
28                (SUM(?r_ii_bedrag) AS ?r_ii_totaal) # R.II Andere rentebaten en soortgelijke opbrengsten
29                (SUM(?r_iii_bedrag) AS ?r_iii_totaal) # R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten
30                (SUM(?r_iv_plus_bedrag) AS ?r_iv_plus_totaal) # R.IV Rentelasten (plus)
31                (SUM(?r_iv_min_bedrag) AS ?r_iv_min_totaal) # R.IV Rentelasten (min)
32                (SUM(?s_i_bedrag) AS ?s_i_totaal)  # S.I Belastingen
33                (SUM(?s_ii_bedrag) AS ?s_ii_totaal) # S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen
34            WHERE {
35                #   BIND("2024-01-01"^^xsd:date AS ?startperiode)
36                #   BIND("2024-12-31"^^xsd:date AS ?eindperiode)
37                # Koppel grootboekposten aan rubrieken binnen meetperiode
38                ?grootboek_post a onz-fin:Grootboekpost ;
39                    onz-g:partOf ?rubriek ;
40                    onz-g:hasDate ?datum ;
41                    onz-fin:heeftGeldBedrag ?geld_bedrag .
42
43                # Match directe ouder: Grootboekrekening (RGS) of Grootboekrubriek (Prismant)
44                {
45                    { ?rubriek a onz-fin:Grootboekrekening }
46                    UNION
47                    { ?rubriek a onz-fin:Grootboekrubriek }
48                }
49                # Anti-dubbeltelling: houd alleen het bladniveau (geen transitive ancestors)
50                FILTER NOT EXISTS {
51                    ?grootboek_post onz-g:partOf ?child .
52                    ?child onz-g:partOf ?rubriek .
53                    FILTER(?child != ?rubriek)
54                    { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } }
55                }
56                FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:)))
57                BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
58
59                FILTER (?datum >= ?startperiode && ?datum <= ?eindperiode)
60
61                # Split bedragen op in componenten voor eindtotaal berekeningen
62
63                # --- P: Bedragen voor eindtotaalberekening ---
64                # Prismant: P.I=81, P.IV=82/83/89/919/920/930
65                # RGS: P.I=WOmz/WRev/WRvi/WRgr/WWvv/WNoa/WLbe/WBat, P.II/III=WWiv, P.IV=WOvb
66                BIND(
67                    IF(
68                        STRSTARTS(?rubriekCode, "81") ||
69                        STRSTARTS(?rubriekCode, "82") ||
70                        STRSTARTS(?rubriekCode, "83") ||
71                        STRSTARTS(?rubriekCode, "89") ||
72                        STRSTARTS(?rubriekCode, "919") ||
73                        STRSTARTS(?rubriekCode, "920") ||
74                        STRSTARTS(?rubriekCode, "930") ||
75                        STRSTARTS(?rubriekCode, "WOmz") ||
76                        STRSTARTS(?rubriekCode, "WRev") ||
77                        STRSTARTS(?rubriekCode, "WRvi") ||
78                        STRSTARTS(?rubriekCode, "WRgr") ||
79                        STRSTARTS(?rubriekCode, "WWvv") ||
80                        STRSTARTS(?rubriekCode, "WNoa") ||
81                        STRSTARTS(?rubriekCode, "WLbe") ||
82                        STRSTARTS(?rubriekCode, "WBat") ||
83                        STRSTARTS(?rubriekCode, "WWiv") ||
84                        STRSTARTS(?rubriekCode, "WOvb"),
85                        ?geld_bedrag, 0) AS ?p_bedrag
86                )
87
88                # --- Q: Diverse kostenrubrieken ---
89                # Q.II: 417/418 (Kosten uitbesteed werk en andere externe kosten)
90                # Q.III: 411-419 (Lonen en salarissen)
91                # Q.IV: 420/4221/4223-4225/4229 (Sociale lasten)
92                # Q.V: 4226 (Afschrijvingen)
93                # Q.VI: 480-484 (Afschrijvingen op immateriële vaste activa en materiële vaste activa)
94                # Q.IX: 423/43-47/486/489/905/911-915/921/931 (Overige bedrijfskosten)
95                BIND(
96                    IF(
97                        STRSTARTS(?rubriekCode, "417") ||
98                        STRSTARTS(?rubriekCode, "418") ||
99                        STRSTARTS(?rubriekCode, "411") ||
100                        STRSTARTS(?rubriekCode, "412") ||
101                        STRSTARTS(?rubriekCode, "413") ||
102                        STRSTARTS(?rubriekCode, "414") ||
103                        STRSTARTS(?rubriekCode, "415") ||
104                        STRSTARTS(?rubriekCode, "416") ||
105                        STRSTARTS(?rubriekCode, "419") ||
106                        STRSTARTS(?rubriekCode, "420") ||
107                        STRSTARTS(?rubriekCode, "4221") ||
108                        STRSTARTS(?rubriekCode, "4223") ||
109                        STRSTARTS(?rubriekCode, "4224") ||
110                        STRSTARTS(?rubriekCode, "4225") ||
111                        STRSTARTS(?rubriekCode, "4229") ||
112                        STRSTARTS(?rubriekCode, "4226") ||
113                        STRSTARTS(?rubriekCode, "480") ||
114                        STRSTARTS(?rubriekCode, "481") ||
115                        STRSTARTS(?rubriekCode, "482") ||
116                        STRSTARTS(?rubriekCode, "483") ||
117                        STRSTARTS(?rubriekCode, "484") ||
118                        STRSTARTS(?rubriekCode, "423") ||
119                        STRSTARTS(?rubriekCode, "43") ||
120                        STRSTARTS(?rubriekCode, "44") ||
121                        STRSTARTS(?rubriekCode, "45") ||
122                        STRSTARTS(?rubriekCode, "46") ||
123                        STRSTARTS(?rubriekCode, "47") ||
124                        STRSTARTS(?rubriekCode, "486") ||
125                        STRSTARTS(?rubriekCode, "489") ||
126                        STRSTARTS(?rubriekCode, "905") ||
127                        STRSTARTS(?rubriekCode, "911") ||
128                        STRSTARTS(?rubriekCode, "912") ||
129                        STRSTARTS(?rubriekCode, "913") ||
130                        STRSTARTS(?rubriekCode, "914") ||
131                        STRSTARTS(?rubriekCode, "915") ||
132                        STRSTARTS(?rubriekCode, "921") ||
133                        STRSTARTS(?rubriekCode, "931") ||
134                        STRSTARTS(?rubriekCode, "WKpr") ||
135                        STRSTARTS(?rubriekCode, "WPer") ||
136                        STRSTARTS(?rubriekCode, "WAfs") ||
137                        STRSTARTS(?rubriekCode, "WWvi") ||
138                        STRSTARTS(?rubriekCode, "WBwv") ||
139                        STRSTARTS(?rubriekCode, "WBed") ||
140                        STRSTARTS(?rubriekCode, "WOok") ||
141                        STRSTARTS(?rubriekCode, "WKol") ||
142                        STRSTARTS(?rubriekCode, "WVkf") ||
143                        STRSTARTS(?rubriekCode, "WAkf"),
144                        ?geld_bedrag, 0) AS ?q_bedrag
145                )
146                # R.I: Prismant=904, RGS=WOvt
147                BIND(IF(STRSTARTS(?rubriekCode, "904") || STRSTARTS(?rubriekCode, "WOvt"), ?geld_bedrag, 0) AS ?r_i_bedrag)
148                # R.II: Prismant=900, RGS=WFbeRlm
149                BIND(IF(STRSTARTS(?rubriekCode, "900") || STRSTARTS(?rubriekCode, "WFbeRlm"), ?geld_bedrag, 0) AS ?r_ii_bedrag)
150                # R.III: Prismant=903, RGS=WWfa/WVhe
151                BIND(IF(STRSTARTS(?rubriekCode, "903") || STRSTARTS(?rubriekCode, "WWfa") || STRSTARTS(?rubriekCode, "WVhe"), ?geld_bedrag, 0) AS ?r_iii_bedrag)
152                # R.IV: Prismant=485/901, RGS=WFbe-WFbeRlm
153                BIND(IF(STRSTARTS(?rubriekCode, "485") || STRSTARTS(?rubriekCode, "901") || STRSTARTS(?rubriekCode, "WFbe"), ?geld_bedrag, 0) AS ?r_iv_plus_bedrag)
154                BIND(IF(STRSTARTS(?rubriekCode, "WFbeRlm"), ?geld_bedrag, 0) AS ?r_iv_min_bedrag)
155                # S.I: Prismant=n.v.t., RGS=WBel
156                BIND(IF(STRSTARTS(?rubriekCode, "WBel"), ?geld_bedrag, 0) AS ?s_i_bedrag)
157                # S.II: Prismant=902, RGS=WRed/WAad
158                BIND(IF(STRSTARTS(?rubriekCode, "902") || STRSTARTS(?rubriekCode, "WRed") || STRSTARTS(?rubriekCode, "WAad"), ?geld_bedrag, 0) AS ?s_ii_bedrag)
159            }
160        }
161
162        # Genereer eindtotalen met berekende formules
163        VALUES (?eindtotaal_type ?jaarrekeningpost) {
164            (1 "P Som der bedrijfsopbrengsten")  # P totaal
165            (2 "Q Som der bedrijfslasten")       # Q totaal
166            (3 "R Resultaat voor belastingen")  # P - Q + R.I + R.II - R.III - R.IV
167            (4 "S Resultaat na belastingen")    # R - S.I + S.II
168        }
169
170        # Bereken eindtotalen obv formules uit jaarrekening model D
171        BIND(
172            IF(?eindtotaal_type = 1, ?p_totaal, 
173            IF(?eindtotaal_type = 2, ?q_totaal, 
174            IF(?eindtotaal_type = 3, ?p_totaal - ?q_totaal + ?r_i_totaal + ?r_ii_totaal - ?r_iii_totaal - (?r_iv_plus_totaal - ?r_iv_min_totaal), 
175            IF(?eindtotaal_type = 4, ?p_totaal - ?q_totaal + ?r_i_totaal + ?r_ii_totaal - ?r_iii_totaal - (?r_iv_plus_totaal - ?r_iv_min_totaal) - ?s_i_totaal + ?s_ii_totaal, 
176            0)))) AS ?bedrag_rubriek
177        )
178    }
179    UNION
180{
181    # ========================================================================
182    # DEEL 2: Individuele jaarrekeningposten uit grootboekdata
183    # Werkt voor Prismant én RGS
184    # ========================================================================
185    {
186        SELECT
187            ?jaarrekeningpost
188            ?bedrag_rubriek
189        WHERE {
190            {
191                SELECT
192                    (SUM(?p_i_bedrag) AS ?p_i_totaal)
193                    (SUM(?p_ii_plus_bedrag) AS ?p_ii_plus_totaal)
194                    (SUM(?p_ii_min_bedrag) AS ?p_ii_min_totaal)
195                    (SUM(?p_iii_bedrag) AS ?p_iii_totaal)
196                    (SUM(?p_iv_bedrag) AS ?p_iv_totaal)
197
198                    (SUM(?q_i_plus_bedrag) AS ?q_i_plus_totaal)
199                    (SUM(?q_i_min_bedrag) AS ?q_i_min_totaal)
200                    (SUM(?q_ii_bedrag) AS ?q_ii_totaal)
201                    (SUM(?q_iii_prismant_bedrag) AS ?q_iii_prismant_totaal)
202                    (SUM(?q_iii_rgs_wper_bedrag) AS ?q_iii_rgs_wper_totaal)
203                    (SUM(?q_iii_rgs_fallback_bedrag) AS ?q_iii_rgs_fallback_totaal)
204                    (SUM(?q_iv_bedrag) AS ?q_iv_totaal)
205                    (SUM(?q_v_bedrag) AS ?q_v_totaal)
206                    (SUM(?q_vi_bedrag) AS ?q_vi_totaal)
207                    (SUM(?q_vii_bedrag) AS ?q_vii_totaal)
208                    (SUM(?q_viii_bedrag) AS ?q_viii_totaal)
209                    (SUM(?q_ix_bedrag) AS ?q_ix_totaal)
210
211                    (SUM(?r_i_bedrag) AS ?r_i_totaal)
212                    (SUM(?r_ii_bedrag) AS ?r_ii_totaal)
213                    (SUM(?r_iii_bedrag) AS ?r_iii_totaal)
214                    (SUM(?r_iv_plus_bedrag) AS ?r_iv_plus_totaal)
215                    (SUM(?r_iv_min_bedrag) AS ?r_iv_min_totaal)
216
217                    (SUM(?s_i_bedrag) AS ?s_i_totaal)
218                    (SUM(?s_ii_bedrag) AS ?s_ii_totaal)
219                WHERE {
220                    # BIND("2024-01-01"^^xsd:date AS ?startperiode)
221                    # BIND("2024-12-31"^^xsd:date AS ?eindperiode)
222
223                    ?grootboek_post a onz-fin:Grootboekpost ;
224                        onz-g:partOf ?rubriek ;
225                        onz-g:hasDate ?datum ;
226                        onz-fin:heeftGeldBedrag ?geld_bedrag .
227
228                    # Match directe ouder: Grootboekrekening (RGS) of Grootboekrubriek (Prismant)
229                    {
230                        { ?rubriek a onz-fin:Grootboekrekening }
231                        UNION
232                        { ?rubriek a onz-fin:Grootboekrubriek }
233                    }
234                    # Anti-dubbeltelling: houd alleen het bladniveau (geen transitive ancestors)
235                    FILTER NOT EXISTS {
236                        ?grootboek_post onz-g:partOf ?child .
237                        ?child onz-g:partOf ?rubriek .
238                        FILTER(?child != ?rubriek)
239                        { { ?child a onz-fin:Grootboekrekening } UNION { ?child a onz-fin:Grootboekrubriek } }
240                    }
241                    FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:)))
242                    BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode)
243
244                    FILTER (?datum >= ?startperiode && ?datum <= ?eindperiode)
245
246                    # -----------------------------
247                    # P
248                    # -----------------------------
249                    BIND(
250                        IF(
251                            STRSTARTS(?rubriekCode, "81") ||
252                            STRSTARTS(?rubriekCode, "WOmz") ||
253                            STRSTARTS(?rubriekCode, "WRev") ||
254                            STRSTARTS(?rubriekCode, "WRvi") ||
255                            STRSTARTS(?rubriekCode, "WRgr") ||
256                            STRSTARTS(?rubriekCode, "WWvv") ||
257                            STRSTARTS(?rubriekCode, "WNoa") ||
258                            STRSTARTS(?rubriekCode, "WLbe") ||
259                            STRSTARTS(?rubriekCode, "WBat"),
260                            ?geld_bedrag, 0
261                        ) AS ?p_i_bedrag
262                    )
263
264                    BIND(IF(STRSTARTS(?rubriekCode, "WWiv"), ?geld_bedrag, 0) AS ?p_ii_plus_bedrag)
265                    BIND(IF(STRSTARTS(?rubriekCode, "WWivGpv"), ?geld_bedrag, 0) AS ?p_ii_min_bedrag)
266                    BIND(IF(STRSTARTS(?rubriekCode, "WWivGpv"), ?geld_bedrag, 0) AS ?p_iii_bedrag)
267
268                    BIND(
269                        IF(
270                            STRSTARTS(?rubriekCode, "82") ||
271                            STRSTARTS(?rubriekCode, "83") ||
272                            STRSTARTS(?rubriekCode, "89") ||
273                            STRSTARTS(?rubriekCode, "919") ||
274                            STRSTARTS(?rubriekCode, "920") ||
275                            STRSTARTS(?rubriekCode, "930") ||
276                            STRSTARTS(?rubriekCode, "WOvb"),
277                            ?geld_bedrag, 0
278                        ) AS ?p_iv_bedrag
279                    )
280
281                    # -----------------------------
282                    # Q
283                    # -----------------------------
284                    BIND(IF(STRSTARTS(?rubriekCode, "WKpr"), ?geld_bedrag, 0) AS ?q_i_plus_bedrag)
285                    BIND(IF(STRSTARTS(?rubriekCode, "WKprKuw"), ?geld_bedrag, 0) AS ?q_i_min_bedrag)
286
287                    BIND(
288                        IF(
289                            STRSTARTS(?rubriekCode, "417") ||
290                            STRSTARTS(?rubriekCode, "418") ||
291                            STRSTARTS(?rubriekCode, "WKprKuw"),
292                            ?geld_bedrag, 0
293                        ) AS ?q_ii_bedrag
294                    )
295
296                    BIND(
297                        IF(
298                            STRSTARTS(?rubriekCode, "411") ||
299                            STRSTARTS(?rubriekCode, "412") ||
300                            STRSTARTS(?rubriekCode, "413") ||
301                            STRSTARTS(?rubriekCode, "414") ||
302                            STRSTARTS(?rubriekCode, "415") ||
303                            STRSTARTS(?rubriekCode, "416") ||
304                            STRSTARTS(?rubriekCode, "419"),
305                            ?geld_bedrag, 0
306                        ) AS ?q_iii_prismant_bedrag
307                    )
308
309                    BIND(
310                        IF(STRSTARTS(?rubriekCode, "WPer"), ?geld_bedrag, 0)
311                        AS ?q_iii_rgs_wper_bedrag
312                    )
313
314                    BIND(
315                        IF(
316                            STRSTARTS(?rubriekCode, "WPerLes") ||
317                            STRSTARTS(?rubriekCode, "WPerOlu"),
318                            ?geld_bedrag, 0
319                        ) AS ?q_iii_rgs_fallback_bedrag
320                    )
321
322                    BIND(
323                        IF(
324                            STRSTARTS(?rubriekCode, "420") ||
325                            STRSTARTS(?rubriekCode, "4221") ||
326                            STRSTARTS(?rubriekCode, "4223") ||
327                            STRSTARTS(?rubriekCode, "4224") ||
328                            STRSTARTS(?rubriekCode, "4225") ||
329                            STRSTARTS(?rubriekCode, "4229") ||
330                            STRSTARTS(?rubriekCode, "WPerSol"),
331                            ?geld_bedrag, 0
332                        ) AS ?q_iv_bedrag
333                    )
334
335                    BIND(
336                        IF(
337                            STRSTARTS(?rubriekCode, "4226") ||
338                            STRSTARTS(?rubriekCode, "WPerPen"),
339                            ?geld_bedrag, 0
340                        ) AS ?q_v_bedrag
341                    )
342
343                    BIND(
344                        IF(
345                            STRSTARTS(?rubriekCode, "480") ||
346                            STRSTARTS(?rubriekCode, "481") ||
347                            STRSTARTS(?rubriekCode, "482") ||
348                            STRSTARTS(?rubriekCode, "483") ||
349                            STRSTARTS(?rubriekCode, "484") ||
350                            STRSTARTS(?rubriekCode, "WAfs"),
351                            ?geld_bedrag, 0
352                        ) AS ?q_vi_bedrag
353                    )
354
355                    BIND(IF(STRSTARTS(?rubriekCode, "WWvi"), ?geld_bedrag, 0) AS ?q_vii_bedrag)
356                    BIND(IF(STRSTARTS(?rubriekCode, "WBwv"), ?geld_bedrag, 0) AS ?q_viii_bedrag)
357
358                    BIND(
359                        IF(
360                            STRSTARTS(?rubriekCode, "423") ||
361                            STRSTARTS(?rubriekCode, "43") ||
362                            STRSTARTS(?rubriekCode, "44") ||
363                            STRSTARTS(?rubriekCode, "45") ||
364                            STRSTARTS(?rubriekCode, "46") ||
365                            STRSTARTS(?rubriekCode, "47") ||
366                            STRSTARTS(?rubriekCode, "486") ||
367                            STRSTARTS(?rubriekCode, "489") ||
368                            STRSTARTS(?rubriekCode, "905") ||
369                            STRSTARTS(?rubriekCode, "911") ||
370                            STRSTARTS(?rubriekCode, "912") ||
371                            STRSTARTS(?rubriekCode, "913") ||
372                            STRSTARTS(?rubriekCode, "914") ||
373                            STRSTARTS(?rubriekCode, "915") ||
374                            STRSTARTS(?rubriekCode, "921") ||
375                            STRSTARTS(?rubriekCode, "931") ||
376                            STRSTARTS(?rubriekCode, "WBed") ||
377                            STRSTARTS(?rubriekCode, "WOok") ||
378                            STRSTARTS(?rubriekCode, "WKol") ||
379                            STRSTARTS(?rubriekCode, "WVkf") ||
380                            STRSTARTS(?rubriekCode, "WAkf"),
381                            ?geld_bedrag, 0
382                        ) AS ?q_ix_bedrag
383                    )
384
385                    # -----------------------------
386                    # R
387                    # -----------------------------
388                    BIND(
389                        IF(
390                            STRSTARTS(?rubriekCode, "904") ||
391                            STRSTARTS(?rubriekCode, "WOvt"),
392                            ?geld_bedrag, 0
393                        ) AS ?r_i_bedrag
394                    )
395
396                    BIND(
397                        IF(
398                            STRSTARTS(?rubriekCode, "900") ||
399                            STRSTARTS(?rubriekCode, "WFbeRlm"),
400                            ?geld_bedrag, 0
401                        ) AS ?r_ii_bedrag
402                    )
403
404                    BIND(
405                        IF(
406                            STRSTARTS(?rubriekCode, "903") ||
407                            STRSTARTS(?rubriekCode, "WWfa") ||
408                            STRSTARTS(?rubriekCode, "WVhe"),
409                            ?geld_bedrag, 0
410                        ) AS ?r_iii_bedrag
411                    )
412
413                    BIND(IF(STRSTARTS(?rubriekCode, "485") || STRSTARTS(?rubriekCode, "901") || STRSTARTS(?rubriekCode, "WFbe"), ?geld_bedrag, 0) AS ?r_iv_plus_bedrag)
414                    BIND(IF(STRSTARTS(?rubriekCode, "WFbeRlm"), ?geld_bedrag, 0) AS ?r_iv_min_bedrag)
415
416                    # -----------------------------
417                    # S
418                    # -----------------------------
419                    BIND(IF(STRSTARTS(?rubriekCode, "WBel"), ?geld_bedrag, 0) AS ?s_i_bedrag)
420
421                    BIND(
422                        IF(
423                            STRSTARTS(?rubriekCode, "902") ||
424                            STRSTARTS(?rubriekCode, "WRed") ||
425                            STRSTARTS(?rubriekCode, "WAad"),
426                            ?geld_bedrag, 0
427                        ) AS ?s_ii_bedrag
428                    )
429                }
430            }
431
432            VALUES (?detail_type ?jaarrekeningpost) {
433                (1  "P.I Netto omzet")
434                (2  "P.II Wijziging in voorraden gereed product en onderhanden werk ten opzichte van de voorafgaande balansdatum")
435                (3  "P.III Geactiveerde productie voor het eigen bedrijf")
436                (4  "P.IV Overige bedrijfsopbrengsten")
437                (5  "Q.I Kosten van grond- en hulpstoffen")
438                (6  "Q.II Kosten uitbesteed werk en andere externe kosten")
439                (7  "Q.III Lonen en salarissen")
440                (8  "Q.IV Sociale lasten")
441                (9  "Q.V Pensioenlasten")
442                (10 "Q.VI Afschrijvingen op immateriële vaste activa en materiële vaste activa")
443                (11 "Q.VII Overige waardevermindering immateriële vaste activa en materiële vaste activa")
444                (12 "Q.VIII Bijzondere waardevermindering van vlottende activa")
445                (13 "Q.IX Overige bedrijfskosten")
446                (14 "R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten")
447                (15 "R.II Andere rentebaten en soortgelijke opbrengsten")
448                (16 "R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten")
449                (17 "R.IV Rentelasten en soortgelijke kosten")
450                (18 "S.I Belastingen")
451                (19 "S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen")
452            }
453
454            BIND(
455                IF(?detail_type = 1, ?p_i_totaal,
456                IF(?detail_type = 2, ?p_ii_plus_totaal - ?p_ii_min_totaal,
457                IF(?detail_type = 3, ?p_iii_totaal,
458                IF(?detail_type = 4, ?p_iv_totaal,
459                IF(?detail_type = 5, ?q_i_plus_totaal - ?q_i_min_totaal,
460                IF(?detail_type = 6, ?q_ii_totaal,
461                IF(?detail_type = 7,
462                    IF(?q_iii_rgs_wper_totaal != 0,
463                        ?q_iii_rgs_wper_totaal - ?q_iv_totaal - ?q_v_totaal,
464                        ?q_iii_prismant_totaal + ?q_iii_rgs_fallback_totaal
465                    ),
466                IF(?detail_type = 8, ?q_iv_totaal,
467                IF(?detail_type = 9, ?q_v_totaal,
468                IF(?detail_type = 10, ?q_vi_totaal,
469                IF(?detail_type = 11, ?q_vii_totaal,
470                IF(?detail_type = 12, ?q_viii_totaal,
471                IF(?detail_type = 13, ?q_ix_totaal,
472                IF(?detail_type = 14, ?r_i_totaal,
473                IF(?detail_type = 15, ?r_ii_totaal,
474                IF(?detail_type = 16, ?r_iii_totaal,
475                IF(?detail_type = 17, ?r_iv_plus_totaal - ?r_iv_min_totaal,
476                IF(?detail_type = 18, ?s_i_totaal,
477                IF(?detail_type = 19, ?s_ii_totaal,
478                    0
479               )))))))))))))))))))
480                AS ?bedrag_rubriek
481            )
482        }
483    }
484}
485    UNION
486    {
487        # =======================================================================
488        # DEEL 3: Volledige lijst van alle jaarrekeningposten (bedrag 0 als fallback)
489        # =======================================================================
490        BIND(0 AS ?bedrag_rubriek)
491        VALUES ?jaarrekeningpost {
492            # P: Som der bedrijfsopbrengsten
493            "P.I Netto omzet"
494            "P.II Wijziging in voorraden gereed product en onderhanden werk ten opzichte van de voorafgaande balansdatum"
495            "P.III Geactiveerde productie voor het eigen bedrijf"
496            "P.IV Overige bedrijfsopbrengsten"
497            "P Som der bedrijfsopbrengsten"
498            
499            # Q: Som der bedrijfslasten
500            "Q.I Kosten van grond- en hulpstoffen"
501            "Q.II Kosten uitbesteed werk en andere externe kosten"
502            "Q.III Lonen en salarissen"
503            "Q.IV Sociale lasten"
504            "Q.V Pensioenlasten"
505            "Q.VI Afschrijvingen op immateriële vaste activa en materiële vaste activa"
506            "Q.VII Overige waardevermindering immateriële vaste activa en materiële vaste activa"
507            "Q.VIII Bijzondere waardevermindering van vlottende activa"
508            "Q.IX Overige bedrijfskosten"
509            "Q Som der bedrijfslasten"
510            
511            # R: Financiële baten en lasten
512            "R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten"
513            "R.II Andere rentebaten en soortgelijke opbrengsten"
514            "R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten"
515            "R.IV Rentelasten en soortgelijke kosten"
516            "R Resultaat voor belastingen"
517            
518            # S: Belastingen en resultaat deelnemingen
519            "S.I Belastingen"
520            "S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen"
521            "S Resultaat na belastingen"
522        }
523    }
524}
525GROUP BY ?jaarrekeningpost
526ORDER BY ?jaarrekeningpost